;-> Orologio by Stefano Regattin
;d> 9 ottobre 1998 da Clock
;m> 10,11,16,17,19,24,29 ottobre 1998
;m> 4,6 novembre 1998
;m> 13,14,23 dicembre 1998
;m> 3 gennaio 1999
;m> 9,12 marzo 1999
;m> 25,26 settembre 1999
;m> 1,2,3,5,6,7,8,9,10,11,22,27,28 febbraio 2000
;m> 2,3,4,6,9,10,30,31 marzo 2000
;m> 6 aprile 2000
;-----------------
#HaiCambiatoLeDimensioniDellaFinestra=2
#HaiPremutoUnTastoDelTopo=8
#HaiRilasciatoUnGadget=$40
#HaiChiusoLaFinestra=$200

DEFTYPE .l RastPortFinestra

DEFTYPE .b AltezzaFont,AltezzaFontRegistrata
DEFTYPE .b NumeroToolType,StatoAllarme,ToolTypeScritti

DEFTYPE .w

Statement AggiustaDimensioniFinestraZero{}
SHARED Angolo$
SHARED LunXFinestraZero
SHARED LunXSchermo
SHARED LunYFinestraZero
SHARED PosXFinestraZero
SHARED PosXFinestraZeroAngoloOpposto
SHARED PosYFinestraZero
SHARED PosYFinestraZeroAngoloOpposto
 Select Angolo$
 Case "TOP-RIGHT"
  If PosXFinestraZero+(LunXFinestraZero-1)<>PosXFinestraZeroAngoloOpposto
   PosXFinestraZero=PosXFinestraZeroAngoloOpposto-(LunXFinestraZero-1)
  EndIf
 Case "BOTTOM-RIGHT"
  If PosXFinestraZero+(LunXFinestraZero-1)<>PosXFinestraZeroAngoloOpposto
   PosXFinestraZero=PosXFinestraZeroAngoloOpposto-(LunXFinestraZero-1)
  EndIf

  If PosYFinestraZero+(LunYFinestraZero-1)<>PosYFinestraZeroAngoloOpposto
   PosYFinestraZero=PosYFinestraZeroAngoloOpposto-(LunYFinestraZero-1)
  EndIf
 Case "BOTTOM-LEFT"
  If PosYFinestraZero+(LunYFinestraZero-1)<>PosYFinestraZeroAngoloOpposto
   PosYFinestraZero=PosYFinestraZeroAngoloOpposto-(LunYFinestraZero-1)
  EndIf
 End Select
 If LunXFinestraZero>LunXSchermo Then LunXFinestraZero=LunXSchermo
 If PosXFinestraZero+LunXFinestraZero-1>LunXSchermo Then PosXFinestraZero=LunXSchermo-LunXFinestraZero
 If PosXFinestraZero<0 Then PosXFinestraZero=0
 If LunYFinestraZero>WBHeight Then LunYFinestraZero=WBHeight
 If PosYFinestraZero+LunYFinestraZero-1>WBHeight Then PosYFinestraZero=WBHeight-LunYFinestraZero
 If PosYFinestraZero<AltezzaFontSchermo+3 Then PosYFinestraZero=AltezzaFontSchermo+3
End Statement

Statement ApriFinestraZero{}
SHARED LunXFinestraZero
SHARED LunYFinestraZero
SHARED PosXFinestraZero
SHARED PosYFinestraZero
SHARED RastPortFinestra
 Window 0,PosXFinestraZero,PosYFinestraZero,LunXFinestraZero,LunYFinestraZero,$140F,"",1,2
 WTitle "Orologio","by Stefano Regattin e-mail>StefanoRegattin@lycosmail.com"
 RastPortFinestra=RastPort(0)
 WindowFont 0
End Statement

Statement LeggiToolType{}
SHARED Angolo$
SHARED AngoloRegistrato$
SHARED FontOrologio$
SHARED FontOrologioRegistrato$
SHARED IconaOrologio$
SHARED AltezzaFont
SHARED AltezzaFontRegistrata
SHARED PosXFinestraZero
SHARED PosXFinestraZeroRegistrata
SHARED PosYFinestraZero
SHARED PosYFinestraZeroRegistrata
 ToolTypeLetti.l=GetIconObject(IconaOrologio$)
 If ToolTypeLetti>0
  NuovoFontOrologio$=FindToolValue("FONTNAME")
  NuovaAltezzaFont$=FindToolValue("FONTSIZE")
  NuovaPosXFinestraZero$=FindToolValue("WINDOWX")
  NuovaPosYFinestraZero$=FindToolValue("WINDOWY")
  NuovoAngolo$=FindToolValue("ANGLE")

  If NuovoFontOrologio$<>""
   FontOrologioRegistrato$=NuovoFontOrologio$
   FontOrologio$=NuovoFontOrologio$
  EndIf

  If NuovaAltezzaFont$<>""
   AltezzaFontRegistrata=Val(NuovaAltezzaFont$)
   AltezzaFont=Val(NuovaAltezzaFont$)
  EndIf

  If NuovaPosXFinestraZero$<>""
   PosXFinestraZeroRegistrata=Val(NuovaPosXFinestraZero$)
   PosXFinestraZero=Val(NuovaPosXFinestraZero$)
  EndIf

  If NuovaPosYFinestraZero$<>""
   PosYFinestraZeroRegistrata=Val(NuovaPosYFinestraZero$)
   PosYFinestraZero=Val(NuovaPosYFinestraZero$)
  EndIf

  If NuovoAngolo$<>""
   Angolo$=NuovoAngolo$
   AngoloRegistrato$=NuovoAngolo$
  EndIf

  FreeIconObject

 EndIf
End Statement

Statement ScriviToolType{}
SHARED Angolo$
SHARED AngoloRegistrato$
SHARED FontOrologio$
SHARED FontOrologioRegistrato$
SHARED IconaOrologio$
SHARED AltezzaFont
SHARED AltezzaFontRegistrata
SHARED PosXFinestraZero
SHARED PosXFinestraZeroAngoloOpposto
SHARED PosXFinestraZeroRegistrata
SHARED PosYFinestraZero
SHARED PosYFinestraZeroAngoloOpposto
SHARED PosYFinestraZeroRegistrata
SHARED ToolTypeScritti
 ToolTypeLetti.l=GetIconObject(IconaOrologio$)
 If ToolTypeLetti>0
  If FindToolType("DONOTWAIT")=False Then NewToolType "DONOTWAIT",""

  If FindToolType("FONTNAME")=True
   SetToolValue "FONTNAME",FontOrologio$
  Else
   NewToolType "FONTNAME",FontOrologio$
  EndIf

  If FindToolType("FONTSIZE")=True
   SetToolValue "FONTSIZE",Str$(AltezzaFont)
  Else
   NewToolType "FONTSIZE",Str$(AltezzaFont)
  EndIf

  Select Angolo$
  Case "TOP-LEFT"
   If FindToolType("WINDOWX")=True
    SetToolValue "WINDOWX",Str$(PosXFinestraZero)
   Else
    NewToolType "WINDOWX",Str$(PosXFinestraZero)
   EndIf

   If FindToolType("WINDOWY")=True
    SetToolValue "WINDOWY",Str$(PosYFinestraZero)
   Else
    NewToolType "WINDOWY",Str$(PosYFinestraZero)
   EndIf
  Case "TOP-RIGHT"
   If FindToolType("WINDOWX")=True
    SetToolValue "WINDOWX",Str$(PosXFinestraZeroAngoloOpposto)
   Else
    NewToolType "WINDOWX",Str$(PosXFinestraZeroAngoloOpposto)
   EndIf

   If FindToolType("WINDOWY")=True
    SetToolValue "WINDOWY",Str$(PosYFinestraZero)
   Else
    NewToolType "WINDOWY",Str$(PosYFinestraZero)
   EndIf
  Case "BOTTOM-RIGHT"
   If FindToolType("WINDOWX")=True
    SetToolValue "WINDOWX",Str$(PosXFinestraZeroAngoloOpposto)
   Else
    NewToolType "WINDOWX",Str$(PosXFinestraZeroAngoloOpposto)
   EndIf

   If FindToolType("WINDOWY")=True
    SetToolValue "WINDOWY",Str$(PosYFinestraZeroAngoloOpposto)
   Else
    NewToolType "WINDOWY",Str$(PosYFinestraZeroAngoloOpposto)
   EndIf
  Case "BOTTOM-LEFT"
   If FindToolType("WINDOWX")=True
    SetToolValue "WINDOWX",Str$(PosXFinestraZero)
   Else
    NewToolType "WINDOWX",Str$(PosXFinestraZero)
   EndIf

   If FindToolType("WINDOWY")=True
    SetToolValue "WINDOWY",Str$(PosYFinestraZeroAngoloOpposto)
   Else
    NewToolType "WINDOWY",Str$(PosYFinestraZeroAngoloOpposto)
   EndIf
  End Select

  If FindToolType("ANGLE")=True
   SetToolValue "ANGLE",Angolo$
  Else
   NewToolType "ANGLE",Angolo$
  EndIf

  ToolTypeScritti=PutIconObject(IconaOrologio$)
  If ToolTypeScritti=True
   FontOrologioRegistrato$=FontOrologio$
   AltezzaFontRegistrata=AltezzaFont
   AngoloRegistrato$=Angolo$
   Select Angolo$
   Case "TOP-LEFT"
    PosXFinestraZeroRegistrata=PosXFinestraZero
    PosYFinestraZeroRegistrata=PosYFinestraZero
   Case "TOP-RIGHT"
    PosXFinestraZeroRegistrata=PosXFinestraZeroAngoloOpposto
    PosYFinestraZeroRegistrata=PosYFinestraZero
   Case "BOTTOM-RIGHT"
    PosXFinestraZeroRegistrata=PosXFinestraZeroAngoloOpposto
    PosYFinestraZeroRegistrata=PosYFinestraZeroAngoloOpposto
   Case "BOTTOM-LEFT"
    PosXFinestraZeroRegistrata=PosXFinestraZeroAngolo
    PosYFinestraZeroRegistrata=PosYFinestraZeroAngoloOpposto
   End Select
  EndIf

  FreeIconObject

 EndIf
End Statement

Statement CercaFont{}
SHARED FontOrologio$
SHARED AltezzaFont
 NEWTYPE .FontInfo
  Nome$
  Altezza.w
  Stile.b
  Segnalatori
  PennaUno
  PennaDue
  ModoDisegno
  Pad
 End NEWTYPE

 *Font.FontInfo=ASLFontRequest(0)

 If *Font<>0
  FontOrologio$=*Font\Nome
  AltezzaFont=*Font\Altezza
 EndIf
End Statement

Statement Impostazioni{}
SHARED Angolo$
SHARED AngoloRegistrato$
SHARED OraAllarme$
SHARED OraDiOggi$
SHARED FontOrologio$
SHARED FontOrologioRegistrato$
SHARED AltezzaFont
SHARED AltezzaFontRegistrata
SHARED LunXFinestraZero
SHARED LunYFinestraZero
SHARED LunXSchermo
SHARED PosXFinestraZero
SHARED PosXFinestraZeroAngoloOpposto
SHARED PosXFinestraZeroRegistrata
SHARED PosYFinestraZero
SHARED PosYFinestraZeroAngoloOpposto
SHARED PosYFinestraZeroRegistrata
SHARED StatoAllarme
SHARED ToolTypeScritti
 Dim Freccia(5)
 BitMap 0,32,16,2
 Freccia(0)=0:Freccia(1)=0
 Freccia(2)=7:Freccia(3)=0
 Freccia(4)=0:Freccia(5)=7
 Polyf 3,&Freccia(0),1
 GetaShape 0,0,0,8,8
 XFlip 0
 Blit 0,8,0
 GetaShape 0,0,0,8,8
 GetaShape 1,8,0,8,8
 YFlip 1
 Blit 1,16,0
 GetaShape 1,8,0,8,8
 GetaShape 2,16,0,8,8
 XFlip 2
 Blit 2,24,0
 GetaShape 2,16,0,8,8
 GetaShape 3,24,0,8,8
 Freccia(0)=0:Freccia(1)=8
 Freccia(2)=7:Freccia(3)=8
 Freccia(4)=0:Freccia(5)=15
 Polyf 3,&Freccia(0),2
 GetaShape 4,0,8,8,8
 XFlip 4
 Blit 4,8,8
 GetaShape 4,0,8,8,8
 GetaShape 5,8,8,8,8
 YFlip 5
 Blit 5,16,8
 GetaShape 5,8,8,8,8
 GetaShape 6,16,8,8,8
 XFlip 6
 Blit 6,24,8
 GetaShape 6,16,8,8,8
 GetaShape 7,24,8,8,8

 Free BitMap 0

 Use IntuiFont 1
 StringGadget 0,  1, 1,  0, 0,6,6*8
 StringGadget 0,  1,14,  0, 1,25,106
 StringGadget 0, 75, 1,  0, 2,4,4*8
 StringGadget 0,  9,27,  0, 3,5,5*8
 StringGadget 0, 67,27,  0, 4,5,5*8
 StringGadget 0,  9,62,  0, 5,5,5*8
 StringGadget 0, 67,62,  0, 6,5,5*8
 ShapeGadget  0, 94,43,512, 7,0,4
 ShapeGadget  0,103,43,512, 8,1,5
 ShapeGadget  0,103,51,512, 9,2,6
 ShapeGadget  0, 94,51,512,10,3,7
 TextGadget   0, 58, 1,  1,11,"A"
 TextGadget   0,  1,75,  1,12,"*** Salva ***"

 PosXFinestraZero=WindowX-WLeftOff
 PosYFinestraZero=WindowY-WTopOff
 PosXFinestraZeroAngoloOpposto=PosXFinestraZero+(LunXFinestraZero-1)
 PosYFinestraZeroAngoloOpposto=PosYFinestraZero+(LunYFinestraZero-1)

 PosXFinestraUno=WindowX
 PosYFinestraUno=WindowY
 LunXFinestraUno=124
 LunYFinestraUno=WTopOff+93

 If PosXFinestraUno+LunXFinestraUno>LunXSchermo Then PosXFinestraUno=LunXSchermo-LunXFinestraUno
 If PosYFinestraUno+LunYFinestraUno>WBHeight Then PosYFinestraUno=WBHeight-LunYFinestraUno

 Window 1,PosXFinestraUno,PosYFinestraUno,LunXFinestraUno,LunYFinestraUno,$140E,"",1,2,0
 WTitle "Impostazioni","Imposta le variabili dell'orologio"
 WindowFont 1

 Select Angolo$
 Case "TOP-LEFT"
  Enable  0,3
  Enable  0,4
  Disable 0,5
  Disable 0,6
  Toggle  0,7,On
  Redraw 1,7
 Case "TOP-RIGHT"
  Enable  0,3
  Disable 0,4
  Disable 0,5
  Enable  0,6
  Toggle  0,8,On
  Redraw 1,8
 Case "BOTTOM-RIGHT"
  Disable 0,3
  Disable 0,4
  Enable  0,5
  Enable  0,6
  Toggle  0,9,On
  Redraw 1,9
 Case "BOTTOM-LEFT"
  Disable 0,3
  Enable  0,4
  Enable  0,5
  Disable 0,6
  Toggle  0,10,On
  Redraw 1,10
 End Select

 Redraw 1,3
 Redraw 1,4
 Redraw 1,5
 Redraw 1,6

 GadgetBorder 94,42,17,17

 WLocate  0,29:Print "X"
 WLocate 58,29:Print "Y"
 WLocate  1,43:Print"Angolo"
 WLocate 42,52:Print"fisso>"
 WLocate  0,64:Print "X"
 WLocate 58,64:Print "Y"

 If OraAllarme$="" Then OraAllarme$=UnLeft$(OraDiOggi$,3)

 Repeat
  SetString 0,0,OraAllarme$
  Redraw 1,0
  SetString 0,1,FontOrologio$
  Redraw 1,1
  SetString 0,2,Str$(AltezzaFont)
  Redraw 1,2
  SetString 0,3,Str$(PosXFinestraZero)
  Redraw 1,3
  SetString 0,4,Str$(PosYFinestraZero)
  Redraw 1,4
  SetString 0,5,Str$(PosXFinestraZeroAngoloOpposto)
  Redraw 1,5
  SetString 0,6,Str$(PosYFinestraZeroAngoloOpposto)
  Redraw 1,6

  ValoriCambiati.b=False
  If FontOrologio$<>FontOrologioRegistrato$ Then ValoriCambiati=True
  If AltezzaFont<>AltezzaFontRegistrata Then ValoriCambiati=True
  Select Angolo$
  Case "TOP-LEFT"
   If PosXFinestraZero<>PosXFinestraZeroRegistrata Then ValoriCambiati=True
   If PosYFinestraZero<>PosYFinestraZeroRegistrata Then ValoriCambiati=True
  Case "TOP-RIGHT"
   If PosXFinestraZero+(LunXFinestraZero-1)<>PosXFinestraZeroRegistrata Then ValoriCambiati=True
   If PosYFinestraZero<>PosYFinestraZeroRegistrata Then ValoriCambiati=True
  Case "BOTTOM-RIGHT"
   If PosXFinestraZero+(LunXFinestraZero-1)<>PosXFinestraZeroRegistrata Then ValoriCambiati=True
   If PosYFinestraZero+(LunYFinestraZero-1)<>PosYFinestraZeroRegistrata Then ValoriCambiati=True
  Case "BOTTOM-LEFT"
   If PosXFinestraZero<>PosXFinestraZeroRegistrata Then ValoriCambiati=True
   If PosYFinestraZero+(LunYFinestraZero-1)<>PosYFinestraZeroRegistrata Then ValoriCambiati=True
  End Select
  If Angolo$<>AngoloRegistrato$ Then ValoriCambiati=True
  If ValoriCambiati=True Then Enable 0,12 Else Toggle 0,12,Off:Disable 0,12
  Redraw 1,12

  EventoFinestraUno.l=WaitEvent

  Select EventoFinestraUno
  Case #HaiRilasciatoUnGadget
   If GadgetHit<7 Then ActivateString 1,GadgetHit
   Select GadgetHit
   Case 0
    OraAllarme$=StringText$(0,0)
   Case 1
    NuovoFontOrologio$=StringText$(0,1)
    If NuovoFontOrologio$="" Then CercaFont{}
    If Right$(NuovoFontOrologio$,5)<>".font" Then NuovoFontOrologio$+".font"
    If Len(NuovoFontOrologio$)>0
     If Exists("FONTS:"+NuovoFontOrologio$)
      FontOrologio$=NuovoFontOrologio$
     EndIf
    EndIf
   Case 2
    AltezzaFont=Val(StringText$(0,2))
    AltezzaFont=Max(AltezzaFont,6)
   Case 3
    PosXFinestraZero=Val(StringText$(0,3))
   Case 4
    PosYFinestraZero=Val(StringText$(0,4))
   Case 5
    PosXFinestraZeroAngoloOpposto=Val(StringText$(0,5))
   Case 6
    PosYFinestraZeroAngoloOpposto=Val(StringText$(0,6))
   Case 7
    If GadgetStatus(0,7)=True Then Angolo$="TOP-LEFT"
   Case 8
    If GadgetStatus(0,8)=True Then Angolo$="TOP-RIGHT"
   Case 9
    If GadgetStatus(0,9)=True Then Angolo$="BOTTOM-RIGHT"
   Case 10
    If GadgetStatus(0,10)=True Then Angolo$="BOTTOM-LEFT"
   Case 11
    StatoAllarme=GadgetStatus(0,11)
   Case 12
    ScriviToolType{}
    If ToolTypeScritti=True
     Toggle 0,12,Off
     Disable 0,12
     Redraw 1,12
    Else
     Toggle 0,12,On
    EndIf
   End Select

   Select Angolo$
   Case "TOP-LEFT"
    PosXFinestraZeroAngoloOpposto=PosXFinestraZero+(LunXFinestraZero-1)
    PosYFinestraZeroAngoloOpposto=PosYFinestraZero+(LunYFinestraZero-1)
    Enable  0,3
    Enable  0,4
    Disable 0,5
    Disable 0,6
   Case "TOP-RIGHT"
    PosXFinestraZero=PosXFinestraZeroAngoloOpposto-(LunXFinestraZero-1)
    PosYFinestraZeroAngoloOpposto=PosYFinestraZero+(LunYFinestraZero-1)
    Disable 0,3
    Enable  0,4
    Enable  0,5
    Disable 0,6
   Case "BOTTOM-RIGHT"
    PosXFinestraZero=PosXFinestraZeroAngoloOpposto-(LunXFinestraZero-1)
    PosYFinestraZero=PosYFinestraZeroAngoloOpposto-(LunYFinestraZero-1)
    Disable 0,3
    Disable 0,4
    Enable  0,5
    Enable  0,6
   Case "BOTTOM-LEFT"
    PosXFinestraZeroAngoloOpposto=PosXFinestraZero+(LunXFinestraZero-1)
    PosYFinestraZero=PosYFinestraZeroAngoloOpposto-(LunYFinestraZero-1)
    Enable  0,3
    Disable 0,4
    Disable 0,5
    Enable  0,6
   End Select

  End Select
 Until EventoFinestraUno=#HaiChiusoLaFinestra
 CloseWindow 1
 Use Window 0
End Statement

Statement DataDiOggi{}
SHARED Allarme$
SHARED DataDiOggi$
SHARED LunghezzaDataDiOggi
SHARED LunghezzaScrittaAllarme
SHARED RastPortFinestra
 Select WeekDay
 Case 0
  GiornoDellaSettimana$="Dom"
 Case 1
  GiornoDellaSettimana$="Lun"
 Case 2
  GiornoDellaSettimana$="Mar"
 Case 3
  GiornoDellaSettimana$="Mer"
 Case 4
  GiornoDellaSettimana$="Gio"
 Case 5
  GiornoDellaSettimana$="Ven"
 Case 6
  GiornoDellaSettimana$="Sab"
 End Select
 Giorno$=Str$(Days)
 Select Months
 Case 1
  Mese$="gennaio"
 Case 2
  Mese$="febbraio"
 Case 3
  Mese$="marzo"
 Case 4
  Mese$="aprile"
 Case 5
  Mese$="maggio"
 Case 6
  Mese$="giugno"
 Case 7
  Mese$="luglio"
 Case 8
  Mese$="agosto"
 Case 9
  Mese$="settembre"
 Case 10
  Mese$="ottobre"
 Case 11
  Mese$="novembre"
 Case 12
  Mese$="dicembre"
 End Select
 Anno$=Str$(Years)
 DataDiOggi$=" "+GiornoDellaSettimana$+", "+Giorno$+" "+Mese$+" "+Anno$+" "
 LunghezzaDataDiOggi.w=TextLength_(RastPortFinestra,&DataDiOggi$,Len(DataDiOggi$))
End Statement

WBStartup

WbToScreen 0

IndirizzoSchermo.l=Peek.l(Addr Screen(0))
LunXSchermo=Peek.w(IndirizzoSchermo+12)

FontOrologio$="Data70.font"
AltezzaFont=13

AltezzaFontSchermo.b=8
OpenFontPrefs
 AltezzaFontSchermo.b=DefaultFontHeight(2)
CloseFontPrefs

IconaOrologio$=ProgPath$+".info"

PosXFinestraZero=0
PosYFinestraZero=AltezzaFontSchermo+3
LunXFinestraZero=70
LunYFinestraZero=30
Angolo$="TOP-LEFT"

LeggiToolType{}

LoadFont 0,FontOrologio$,AltezzaFont

LoadFont 1,"topaz.font",8

Select Angolo$
Case "TOP-RIGHT"
 PosXFinestraZeroAngoloOpposto=PosXFinestraZero
 PosXFinestraZero-(LunXFinestraZero-1)
Case "BOTTOM-RIGHT"
 PosXFinestraZeroAngoloOpposto=PosXFinestraZero
 PosXFinestraZero-(LunXFinestraZero-1)
 PosYFinestraZeroAngoloOpposto=PosYFinestraZero
 PosYFinestraZero-(LunYFinestraZero-1)
Case "BOTTOM-LEFT"
 PosYFinestraZeroAngoloOpposto=PosYFinestraZero
 PosYFinestraZero-(LunYFinestraZero-1)
End Select

AggiustaDimensioniFinestraZero{}

ApriFinestraZero{}

DataDiOggi$=Date$(SystemDate)
DataDiOggi{}

LunXFinestraZero=WLeftOff+LunghezzaDataDiOggi+18
LunYFinestraZero=WTopOff+AltezzaFont*2+6

Select Angolo$
Case "TOP-LEFT"
 PosXFinestraZeroAngoloOpposto=PosXFinestraZero+(LunXFinestraZero-1)
 PosYFinestraZeroAngoloOpposto=PosYFinestraZero+(LunYFinestraZero-1)
Case "TOP-RIGHT"
 PosXFinestraZero=PosXFinestraZeroAngoloOpposto
 PosXFinestraZero-(LunXFinestraZero-1)
 PosYFinestraZeroAngoloOpposto=PosYFinestraZero+(LunYFinestraZero-1)
Case "BOTTOM-RIGHT"
 PosXFinestraZero=PosXFinestraZeroAngoloOpposto
 PosXFinestraZero-(LunXFinestraZero-1)
 PosYFinestraZero=PosYFinestraZeroAngoloOpposto
 PosYFinestraZero-(LunYFinestraZero-1)
Case "BOTTOM-LEFT"
 PosXFinestraZeroAngoloOpposto=PosXFinestraZero+(LunXFinestraZero-1)
 PosYFinestraZero=PosYFinestraZeroAngoloOpposto
 PosYFinestraZero-(LunYFinestraZero-1)
End Select

CloseWindow 0

AggiustaDimensioniFinestraZero{}

ApriFinestraZero{}

RaggioCerchio=AltezzaFont/2

Repeat
 EventoFinestraZero.l=Event

 If EventoFinestraZero=#HaiCambiatoLeDimensioniDellaFinestra
  AltezzaFont=InnerHeight/2
  If AltezzaFont<4 Then AltezzaFont=4
  LunXFinestraZero=WindowWidth
  LunYFinestraZero=WindowHeight
  RaggioMassimoCerchio=AltezzaFont/2
  LoadFont 0,FontOrologio$,AltezzaFont
  WindowFont 0
  WCls
 EndIf

 If EventoFinestraZero=#HaiPremutoUnTastoDelTopo
  PrecedenteFontOrologio$=FontOrologio$
  PrecedenteAltezzaFont.b=AltezzaFont
  Impostazioni{}
  Use Window 0
  FinestraZeroAggiornata.b=False

  If FontOrologio$<>PrecedenteFontOrologio$ OR AltezzaFont<>PrecedenteAltezzaFont
   LoadFont 0,FontOrologio$,AltezzaFont
   WindowFont 0
   DataDiOggi{}
   LunXFinestraZero=WLeftOff+LunghezzaDataDiOggi+18
   LunYFinestraZero=WTopOff+AltezzaFont*2+6
   CloseWindow 0
   AggiustaDimensioniFinestraZero{}
   ApriFinestraZero{}
   FinestraZeroAggiornata=True
  EndIf

  If FinestraZeroAggiornata=False
   If PosXFinestraZero<>WindowX-WLeftOff OR PosYFinestraZero<>WindowY-WTopOff
    CloseWindow 0
    AggiustaDimensioniFinestraZero{}
    ApriFinestraZero{}
   EndIf
  EndIf

  RaggioMassimoCerchio=AltezzaFont/2
  RaggioCerchio=RaggioMassimoCerchio
 EndIf

 DataDiOggi$=Date$(SystemDate)
 DataDiOggi{}
 XData.w=(InnerWidth-LunghezzaDataDiOggi)/2
 WLocate XData,0:Print DataDiOggi$
 OraDiOggi$=Str$(Hours/10)
 OraDiOggi$+Str$(Hours MOD 10)+":"
 OraDiOggi$+Str$(Mins/10)
 OraDiOggi$+Str$(Mins MOD 10)+":"
 OraDiOggi$+Str$(Secs/10)
 OraDiOggi$+Str$(Secs MOD 10)
 LunghezzaOraDiOggi.w=TextLength_(RastPortFinestra,&OraDiOggi$,Len(OraDiOggi$))
 XOra.w=(InnerWidth-LunghezzaOraDiOggi)/2-1
 WLocate XOra,AltezzaFont:Print "  ",OraDiOggi$,"  "
 If StatoAllarme=On
  If Left$(OraDiOggi$,5)=OraAllarme$ Then BeepScreen 0
  XAllarme=InnerWidth-1-AltezzaFont/2
  YAllarme=InnerHeight-1-AltezzaFont/2
  WCircle XAllarme,YAllarme,RaggioCerchio,1
 EndIf
 Delay_ 50
 If StatoAllarme=On
  WCircle XAllarme,YAllarme,RaggioCerchio,0
  RaggioCerchio+1
  If RaggioCerchio>RaggioMassimoCerchio Then RaggioCerchio=1
 EndIf
Until EventoFinestraZero=#HaiChiusoLaFinestra
End
